home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1998 August / PC Plus SuperCD 50a Issue 142 (CD142a) (August 1998).iso / trial / demon / TURNPIKE.1 / CLASSES.ZIP / JAVA / AWT / Polygon.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-04-14  |  1.5 KB  |  114 lines

  1. package java.awt;
  2.  
  3. public class Polygon {
  4.    public int npoints;
  5.    public int[] xpoints = new int[4];
  6.    public int[] ypoints = new int[4];
  7.    Rectangle bounds;
  8.  
  9.    public Polygon() {
  10.    }
  11.  
  12.    public Polygon(int[] var1, int[] var2, int var3) {
  13.       this.npoints = var3;
  14.       this.xpoints = new int[var3];
  15.       this.ypoints = new int[var3];
  16.       System.arraycopy(var1, 0, this.xpoints, 0, var3);
  17.       System.arraycopy(var2, 0, this.ypoints, 0, var3);
  18.    }
  19.  
  20.    void calculateBounds(int[] var1, int[] var2, int var3) {
  21.       int var4 = Integer.MAX_VALUE;
  22.       int var5 = Integer.MAX_VALUE;
  23.       int var6 = Integer.MIN_VALUE;
  24.       int var7 = Integer.MIN_VALUE;
  25.  
  26.       for(int var8 = 0; var8 < var3; ++var8) {
  27.          int var9 = var1[var8];
  28.          var4 = var4 <= var9 ? var4 : var9;
  29.          var6 = var6 >= var9 ? var6 : var9;
  30.          int var10 = var2[var8];
  31.          var5 = var5 <= var10 ? var5 : var10;
  32.          var7 = var7 >= var10 ? var7 : var10;
  33.       }
  34.  
  35.       this.bounds = new Rectangle(var4, var5, var6 - var4, var7 - var5);
  36.    }
  37.  
  38.    void updateBounds(int var1, int var2) {
  39.       int var3 = this.bounds.x;
  40.       this.bounds.x = var3 <= var1 ? var3 : var1;
  41.       var3 = this.bounds.width;
  42.       int var4 = var1 - this.bounds.x;
  43.       this.bounds.width = var3 >= var4 ? var3 : var4;
  44.       var3 = this.bounds.y;
  45.       this.bounds.y = var3 <= var2 ? var3 : var2;
  46.       var3 = this.bounds.height;
  47.       var4 = var2 - this.bounds.y;
  48.       this.bounds.height = var3 >= var4 ? var3 : var4;
  49.    }
  50.  
  51.    public void addPoint(int var1, int var2) {
  52.       if (this.npoints == this.xpoints.length) {
  53.          int[] var3 = new int[this.npoints * 2];
  54.          System.arraycopy(this.xpoints, 0, var3, 0, this.npoints);
  55.          this.xpoints = var3;
  56.          var3 = new int[this.npoints * 2];
  57.          System.arraycopy(this.ypoints, 0, var3, 0, this.npoints);
  58.          this.ypoints = var3;
  59.       }
  60.  
  61.       this.xpoints[this.npoints] = var1;
  62.       this.ypoints[this.npoints] = var2;
  63.       ++this.npoints;
  64.       if (this.bounds != null) {
  65.          this.updateBounds(var1, var2);
  66.       }
  67.  
  68.    }
  69.  
  70.    public Rectangle getBoundingBox() {
  71.       if (this.bounds == null) {
  72.          this.calculateBounds(this.xpoints, this.ypoints, this.npoints);
  73.       }
  74.  
  75.       return this.bounds;
  76.    }
  77.  
  78.    public boolean inside(int var1, int var2) {
  79.       if (this.getBoundingBox().inside(var1, var2)) {
  80.          int var3 = 0;
  81.  
  82.          for(int var4 = 0; var4 < this.npoints; ++var4) {
  83.             int var5 = (var4 + 1) % this.npoints;
  84.             int var6 = this.xpoints[var5] - this.xpoints[var4];
  85.             int var7 = this.ypoints[var5] - this.ypoints[var4];
  86.             if (var7 != 0) {
  87.                int var8 = var1 - this.xpoints[var4];
  88.                int var9 = var2 - this.ypoints[var4];
  89.                if (this.ypoints[var4] == var2) {
  90.                   --var9;
  91.                }
  92.  
  93.                if (this.ypoints[var5] == var2) {
  94.                   ++var7;
  95.                }
  96.  
  97.                float var10 = (float)var9 / (float)var7;
  98.                if ((double)var10 >= (double)0.0F && (double)var10 <= (double)1.0F && (int)(var10 * (float)var6) > var8) {
  99.                   ++var3;
  100.                }
  101.             }
  102.          }
  103.  
  104.          if (var3 % 2 == 0) {
  105.             return false;
  106.          } else {
  107.             return true;
  108.          }
  109.       } else {
  110.          return false;
  111.       }
  112.    }
  113. }
  114.